import 'package:flutter/material.dart';
import 'package:flutter_demo/ui/pages/status/data/share_data.dart';
import 'package:flutter_demo/ui/pages/status/provider/base/a2_page_widget.dart';
import 'package:flutter_demo/ui/pages/status/provider/base/b2_page_widget.dart';
import 'package:provider/provider.dart';

//参考文档 https://blog.csdn.net/Lastdoggod/article/details/125955791
class BaseProviderTestWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _BaseProviderTestState();
}

class _BaseProviderTestState extends State<BaseProviderTestWidget> {
  @override
  Widget build(BuildContext context) {
    /**
     * Provider放置的位置一般是在相应的widget的外层，也就是数据状态的共享都是在该层widget内部进行
     * Provider是最基本的Provider组件，可以使用它为组件树中的任何位置提供值。
     * Provider的context已经存在把 Column 包裹起来了，所以在Column下的任何一个组件，
     * Provider提供的模型。但是我们看到，因为provider源码中并没有使用到监听类，
     * 所以，使用Provider时，数据并不会自动刷新。如果需要刷新则需要使用setState等方法去刷新界面。
     * 如果需要刷新需要使用 ChangeNotifierProvider
     */
    return Provider<ShareData>(
      ///配置共享数据
      create: (context) {
        return ShareData(nickname: "tc ...", level: 0);
      },
      child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: const [A2PageWidget(), B2PageWidget()],
      ),
    );
  }
}
